package manager

import (
	"encoding/gob"
	"entrytask/facade"
	errno "entrytask/pkg/error"
	"entrytask/rpc/service"
	//"encoding/gob"
	"entrytask/pkg/rpc"
	"github.com/spf13/viper"
)

func Registry() *rpc.Server {
	// 需要对interface可能产生的类型进行注册(注册类型与入参返回值类型需保持一致)
	gob.Register(&errno.Errno{})
	gob.Register(&facade.User{})
	gob.Register(&facade.UserLoginRequest{})
	gob.Register(&facade.UserLogonRequest{})
	gob.Register(&facade.UserUpdateRequest{})

	// 创建rpc服务端, 地址从配置文件中取
	addr := viper.GetString("rpc_addr")
	server := rpc.NewServer(addr)
	// 将方法注册到服务端
	server.Register(facade.Login, service.UserLogin)
	server.Register(facade.QueryName, service.UserQueryByName)
	server.Register(facade.QueryToken, service.UserQueryByToken)
	server.Register(facade.UpdateUser, service.UserUpdateInfo)
	// not use now
	// server.Register(facade.Logon, service.UserLogon)
	// server.Register(facade.UpdateProfile, service.UserUpdateProfile)
	// server.Register(facade.UpdateNick, service.UserUpdateNick)

	return server
}
